redis 保存大量数据

您所在的位置:网站首页 redis 存文件 redis 保存大量数据

redis 保存大量数据

2023-08-21 00:34| 来源: 网络整理| 查看: 265

1.概述

在项目中使用redis缓存万量级的数据,如果只是用普通的方式进行缓存数据会非常耗时

private void addSetMembers(String key, List values) { for (String value: values) { stringRedisTemplate.opsForSet().add(key, value); } } 2.分析

之所以慢的原因就是如果数据是1万条,add方法就会执行1万次,也就是产生1万次的web服务器与redis的通信连接,每次通信往返大概耗时1毫秒,因此1万次通信就是10秒,10万次就是100秒,数据量与耗时成正比。因此解决这个问题最直接的方案就是减少通信次数。而redis的pipeline正好可以用来减少与redis的通信。

3.代码 public void addSetMembers(String key, List values) { //开启管道 stringRedisTemplate.executePipelined((RedisCallback) connection -> { for (String value: values) { //添加执行命令 connection.setCommands().sAdd(key.getBytes(), value.getBytes()); } return null; }); } 4.比较分析

使用pipeline之后,缓存速度有了显著的提升。 以下是 Redis实战 一书中的数据,可以作为参考: 在这里插入图片描述在这里插入图片描述 调用pipeline的方法很明显比普通的方法快好几倍

5.小结

redis的pipeline可以减少web服务器与redis的通信次数,同样地,redis的multi和exec命令也能够减少通信次数。只不过后者是事务型的,前者是非事务的,事务会消耗一定的资源并且会阻塞其他的命令,所以在不需要保证事务的情况下pipeline可以带来更好的性能



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3